//	определяем текущую ширину страницы
function windowWidth() {
	var x, y;
	// общий синтаксис
	if (self.innerHeight) {
		x = self.innerWidth;
		// IE 6 Strict Mode
	} else if (document.documentElement && document.documentElement.clientHeight) {
		x = document.documentElement.clientWidth;
		// Остальные версии IE
	} else if (document.body) {
		x = document.body.clientWidth;
	}
	return x;
}

//   Далее следует код, запрещающий выделение объектов на странице
function preventSelection(element) {
	var preventSelection = false;

	function addHandler(element, event, handler) {
		if (element.attachEvent) element.attachEvent('on' + event, handler);
		else if (element.addEventListener) element.addEventListener(event, handler, false);
	}

	function removeSelection() {
		if (window.getSelection) window.getSelection().removeAllRanges();
		else if (document.selection && document.selection.clear) document.selection.clear();
	}

	function killCtrlA(event) {
		var event = event || window.event;
		var sender = event.target || event.srcElement;
		if (sender.tagName.match(/INPUT|TEXTAREA/i)) return;
		var key = event.keyCode || event.which;
		if (event.ctrlKey && key == 'A'.charCodeAt(0)) {
			removeSelection();
			if (event.preventDefault) event.preventDefault();
			else
			event.returnValue = false;
		}
	}
	// не даем выделять текст мышкой
	addHandler(element, 'mousemove', function () {
		if (preventSelection) removeSelection();
	});
	addHandler(element, 'mousedown', function (event) {
		var event = event || window.event;
		var sender = event.target || event.srcElement;
		preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
	});
	// борем dblclick
	// если вешать функцию не на событие dblclick, можно избежать
	// временное выделение текста в некоторых браузерах
	addHandler(element, 'mouseup', function () {
		if (preventSelection) removeSelection();
		preventSelection = false;
	});
	// борем ctrl+A
	addHandler(element, 'keydown', killCtrlA);
	addHandler(element, 'keyup', killCtrlA);
}

//	Обработка нажатий клавиш Up Down Enter Escape
function carOptionListsKeypress(event) {
	var keyCode = event.keyCode;
	if ((keyCode == 40 || keyCode == 38 || keyCode == 13 || keyCode == 27) && 
		carOptionLists.filter(function () {
			return $(this).css('display') != 'none'
		}).length > 0) 
	{
		var currList = carOptionLists.filter(function () {
			return $(this).css('display') != 'none'
		});
		var liTMP = $('li', $(currList)).filter(function () {
			return $(this).attr('class').indexOf('active') >= 0
		});
		switch (keyCode) {
			case 40:
				if (liTMP.length == 0) {
					carOptionsActiveLi.removeClass('active');
					liTMP = currList.find('li').eq(0);
					liTMP.addClass('active');
					carOptionsActiveLi = liTMP;
					liTMP.each(function () {
						this.scrollIntoView(false)
					});
				} else {
					if (liTMP.next().length > 0) {
						carOptionsActiveLi.removeClass('active');
						liTMP = liTMP.next();
						carOptionsActiveLi = liTMP;
						liTMP.addClass('active');
						var liTMP_ = liTMP.next().next().next().next().next().next().next().next().next();
						if (liTMP_.length > 0) liTMP_.each(function () {
							this.scrollIntoView(false)
						});
					}
				}
			break;
	
			case 38:
				if (liTMP.length == 0) {
					carOptionsActiveLi.removeClass('active');
					liTMP = currList.find('li').eq(0);
					liTMP.addClass('active');
					carOptionsActiveLi = liTMP;
					liTMP.each(function () {
						this.scrollIntoView(false)
					});
				} else {
					if (liTMP.prev().length > 0) {
						carOptionsActiveLi.removeClass('active');
						liTMP = liTMP.prev();
						liTMP.addClass('active');
						carOptionsActiveLi = liTMP;
						var liTMP_ = liTMP.next().next().next().next().next().next().next().next().next();
						if (liTMP_.length > 0) liTMP_.each(function () {
							this.scrollIntoView(false)
						});
					}
				}
			break;
	
			case 13:
				if (liTMP.length > 0) {
					liTMP.mousedown();
				}
			break;
	
			case 27:
				carOptionLists.css('display', 'none');
			break;
		}
		if (event.preventDefault) event.preventDefault();
		event.returnValue = false;
	}
}

// --------------------------- ВОДИТЕЛИ --------------------------------------------

//	Функция добавления строки с параметрами водителя
function addDriverRowHTML() {
	var res = 
	  '<div class="f-driver">' 
		+ '<div class="f-driver-c1">' 
			+ '<p>Водитель 1:</p>' 
			+ '<a class="active" onclick="return false;" title="Мужчина" href="#">Мужчина</a>' 
			+ '<a class=""       onclick="return false;" title="Женщина" href="#">Женщина</a>' 
		+ '</div>' 
		+ '<div class="f-driver-c2">' 
			+ '<label> Возраст, лет: <input type="text" class="input-47"></label>' 
			+ '<label> Стаж вождения, лет: <input type="text" class="input-47"></label>' 
			+ '<a type="deleteDriver" title="Удалить водителя" onclick="deleteDriver(this);return false;" href="#"><img class="delete" alt="X" src="img/ico-x.png"></a>' 
		+ '</div>' 
	+ '</div>';
	
	var row = $(res);

	if (driverList == undefined || driverList.length == 0) 
		driverList = $('#driverList').eq(0);
	lastDriver = driverList.find('.f-driver').last();
	
	if (driversFooter == undefined) 
		driversFooter = $('.f1-p1').filter('[type=driversFooter]').eq(0);
	
	if (lastDriver.length == 0) { //	Если водителей нет, то либо мультидрайв, либо страница только загрузилась
		driversFooter.before(row);
		if (multiDrive) {
			driversFooter.find('div:first').after('<span><img alt="" src="img/ico-cancel.png"> <a title="" href="#" onmousedown="setMultiDrive();return false;">Не указывать водителей, выбрать мультидрайв</a></span>').remove();
			multiDrive = false;
		}
	} else { //	Иначе добавляем в конец списка водителей
		lastDriver.after(row);
	}
	var drivers = driverList.find('.f-driver');
	for (var i = 1; i <= drivers.length; i++)
	drivers.eq(i - 1).find('p:first').text('Водитель ' + i + ':');
	initDriverInputs();
	initDriverSex();
}

//	Функция удаления водителя
function deleteDriver(obj) {
	$(obj).parent().parent().remove();
	if (typeof driverList == 'undefined' || driverList.length == 0) driverList = $('#driverList').eq(0);
	var drivers = driverList.find('.f-driver');
	var countDrivers = drivers.length;
	for (var i = 1; i <= drivers.length; i++)
	drivers.eq(i - 1).find('p:first').text('Водитель ' + i + ':');
	if (typeof driversFooter == 'undefined') driversFooter = $('.f1-p1').filter('[type=driversFooter]').eq(0);
	if (!multiDriveFromButton && countDrivers == 0) //	Если удалили всех водителей (Мультидрайв)
	setMultiDrive();
}

function setMultiDrive() {
	multiDriveFromButton = true;
	var drivers = driverList.find('.f-driver');
	for (var i = 0; i < drivers.length; i++)
	drivers.eq(i).find('a').filter('[type=deleteDriver]').click();
	multiDriveFromButton = false;
	if (typeof driversFooter == 'undefined') driversFooter = $('.f1-p1').filter('[type=driversFooter]').eq(0);
	multiDriveTextHTML = '<div style="float:left;width:470px;text-align:left;font-family:times New Roman;font-size:12px;">Вы выбрали опцию <span style="color:#ff7200;padding:0px;"><b>«Мультидрайв»</b></span>.' + 'При наступлении страхового случая ущерб<br>будет возмещен страховой компанией вне зависимости от того, кто находился за рулем.</div>';
	driversFooter.find('span:first').before(multiDriveTextHTML).remove();
	multiDrive = true;
}

// Инициализировать выбор пола водителей
function initDriverSex() {
	$(".f-driver-c1 a").mousedown(function () {
		if (!$(this).hasClass("active")) {
			$(this).parent().find("a").removeClass("active");
			$(this).addClass("active");
		}
		return false;
	});
}

//	Инициализировать проверку содержимого input возраста/стажа водителей
function initDriverInputs() {
	var inputs = $('.input-47');
	inputs.bind('change mouseup keypress keyup keydown', checkDriverAgeOrExp);
}

//	Проверить содержимое input возраста/стажа водителя
function checkDriverAgeOrExp() {
	var value = $(this).val();
	if (isNaN(parseInt(value))) {
		$(this).val('');
		return;
	}
	if (value > 99) $(this).val(99);
}

//--------------------------- СИГНАЛИЗАЦИЯ --------------------------------

//	Вешаем обработчиики событий кликов по сигнализации
function initAlarmInputs() {
	//	Обработка кликов по ПС техноблок
	$("#advTecnoblock").add($("label").filter(function () {
		return $(this).attr('for') == "advTecnoblock"
	})).mousedown(function (event) {
		$("#advTecnoblock").attr('checked', 'checked');
		hideAdvImmAlarm();
		$("#advTecnAdv").css("display", "");
		toResults = false;
		calculateCasko();
	});

	//	Обработка кликов по ПС GreatGuard
	$("#advGreatGuard").add($("label").filter(function () {
		return $(this).attr('for') == "advGreatGuard"
	})).mousedown(function (event) {
		hideAdvImmAlarm();
		$('#advGreatGuardAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});

	//	Обработка кликов по ПС MED
	$("#advMED").add($("label").filter(function () {
		return $(this).attr('for') == "advMED"
	})).mousedown(function (event) {
		$("#advMED").attr('checked', 'checked');
		hideAdvImmAlarm();
		$('#advMEDAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});

	//	Спринг
	$("#advSpring").add($("label").filter(function () {
		return $(this).attr('for') == "advSpring"
	})).mousedown(function (event) {
		$("#advSpring").attr('checked', 'checked');
		hideAdvImmAlarm();
		$('#advSpringAdv').css("display", "");

		toResults = false;
		calculateCasko();
	});

	$("#advImmobilizerOther").add($("label").filter(function () {
		return $(this).attr('for') == "advImmobilizerOther"
	})).mousedown(function (event) {
		$("#advImmobilizerOther").attr('checked', 'checked');
		hideAdvImmAlarm();
		toResults = false;
		calculateCasko();

	});

	//	Обработка кликов по ПС BlackBug
	$("#advBlackBugSuper").add($("label").filter(function () {
		return $(this).attr('for') == "advBlackBugSuper"
	})).mousedown(function (event) {
		$("#advBlackBugSuper").attr('checked', 'checked');
		hideTransponderAlarm();
		$('#advBlackBugAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});

	//	Обработка кликов по ПС ComplexDF
	$("#advComplexDF").add($("label").filter(function () {
		return $(this).attr('for') == "advComplexDF"
	})).mousedown(function (event) {
		$("#advComplexDF").attr('checked', 'checked');
		hideTransponderAlarm();
		$('#advComplexDFAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});

	//	Обработка кликов по SkyBrake
	$("#advSkybrake").add($("label").filter(function () {
		return $(this).attr('for') == "advSkybrake"
	})).mousedown(function (event) {
		$("#advSkybrake").attr('checked', 'checked');
		hideTransponderAlarm();
		$('#advSkybrakeAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});

	$("#advTransponderOther").add($("label").filter(function () {
		return $(this).attr('for') == "advTransponderOther"
	})).mousedown(function (event) {
		$("#advTransponderOther").attr('checked', 'checked');
		hideTransponderAlarm();
		toResults = false;
		calculateCasko();
	});

	//	Спутниковые ПС
	//	Starcom
	$("#advStarcom").add($("label").filter(function () {
		return $(this).attr('for') == "advStarcom"
	})).mousedown(function (event) {
		hideSatelliteAlarm();
		$("#advStarcom").attr('checked', 'checked');
		$('#advStarcomAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});

	//	Цезарь-Саттелит
	$("#advCezar").add($("label").filter(function () {
		return $(this).attr('for') == "advCezar"
	})).mousedown(function (event) {
		hideSatelliteAlarm();
		$("#advCezar").attr('checked', 'checked');
		$('#advCezarAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});
	//	Эшелон
	$("#advEchelon").add($("label").filter(function () {
		return $(this).attr('for') == "advEchelon"
	})).mousedown(function (event) {
		hideSatelliteAlarm();
		$("#advEchelon").attr('checked', 'checked');
		$('#advEchelonAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});

	//	Arkan
	$("#advArkan").add($("label").filter(function () {
		return $(this).attr('for') == "advArkan"
	})).mousedown(function (event) {
		$("#advArkan").attr('checked', 'checked');
		hideSatelliteAlarm();
		$('#advArkanAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});

	//	Барьер
	$("#advBarrier").add($("label").filter(function () {
		return $(this).attr('for') == "advBarrier"
	})).mousedown(function (event) {
		$("#advBarrier").attr('checked', 'checked');
		hideSatelliteAlarm();
		$('#advBarrierAdv').css("display", "");
		toResults = false;
		calculateCasko();
	});

	//	Спутниковые "Другое"
	$("#advSattelliteOther").add($("label").filter(function () {
		return $(this).attr('for') == "advSattelliteOther"
	})).mousedown(function (event) {
		$("#advSattelliteOther").attr('checked', 'checked');
		hideSatelliteAlarm();
		toResults = false;
		calculateCasko();
	});
};

function hideSatelliteAlarm() {
	$('#advArkanAdv').css("display", "none");
	$('#advCezarAdv').css("display", "none");
	$('#advStarcomAdv').css("display", "none");
	$('#advEchelonAdv').css("display", "none");
	$('#advBarrierAdv').css("display", "none");
	$('#alarmRecalculate').css('display', 'none');
}

function hideTransponderAlarm() {
	$('#advSkybrakeAdv').css("display", "none");
	$('#advBlackBugAdv').css("display", "none");
	$('#advComplexDFAdv').css("display", "none");
	$('#advSpringAdv').css("display", "none");
}

function hideAdvImmAlarm() {
	$("#advTecnAdv").css("display", "none");
	$('#advGreatGuardAdv').css("display", "none");
	$('#advMEDAdv').css("display", "none");
	$('#advSpringAdv').css("display", "none");
	$('#alarmRecalculate').css('display', 'none');
}

//----------------------- РЕУЗЛЬТАТЫ РАСЧЕТА ---------------------------

function hideCalculationResult() { //	Спрятать таблицу с результатами расчета
	$('#f-b-car-bg').css('display', 'block');
	$('#f-2').css('display', 'none')
	$('#f1-town').find('input').filter('[type=submit]').attr('id', 'f1-submit-big');
}

function showCalculationResult() { //	Показать таблицу с результатами расчета
	$('#f-b-car-bg').css('display', 'block');
	$('#f-2').css('display', '')
	$('#f1-town').find('input').filter('[type=submit]').attr('id', 'f1-submit-small');
}


//------------------ РАЗМЕРЫ ОКНА, ПОЛОЖЕНИЕ ЭЛЕМЕНТОВ ----------------------

function getClientWidth() {
	return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientWidth : document.body.clientWidth;
}

function getClientHeight() {
	return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientHeight : document.body.clientHeight;
}

function getBodyScrollTop() {
	return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}

//   Модуль javascript навигации по странице

function GetPos(elem) {
	var offTrial = document.getElementById(elem);
	var offL = 0;
	var offT = 0;
	while (offTrial) {
		offL += offTrial.offsetLeft;
		offT += offTrial.offsetTop;
		offTrial = offTrial.offsetParent;
	}
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") {
		offL += document.body.leftMargin;
		offT += document.body.topMargin;
	}
	return {
		x: offL,
		y: offT
	}
}

function GetPosObj(obj) {
	var offL = 0;
	var offT = 0;
	while (obj) {
		offL += obj.offsetLeft;
		offT += obj.offsetTop;
		obj = obj.offsetParent;
	}
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") {
		offL += document.body.leftMargin;
		offT += document.body.topMargin;
	}
	return {
		x: offL,
		y: offT
	}
}

//   Функция скроллинга

function scrollIt(obj, href) {
	elto = href.toString();
	elto = elto.substr(elto.indexOf('#') + 1)
	elposfrom = GetPosObj(obj);
	elposto = GetPos(elto);
	yfrom = elposfrom.y;
	yto = elposto.y;
	i = yfrom;
	window.scrollTo(0, elposto.y);
}
